package fiuba.algo3.algothief.vista;

import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

import org.xml.sax.SAXException;

import fiuba.algo3.algothief.modelo.*;
import fiuba.algo3.algothief.controlador.*;

public class VistaConsola {

	private Caso modelo;
	private Controlador controlador;

	public VistaConsola(Caso modelo, Controlador controlador) {
		this.modelo = modelo;
		this.controlador = controlador;
		this.controlador.setVista(this);
	}

	public void menuInicial() throws ParserConfigurationException, TransformerException, SAXException, IOException{
		System.out.println("Bienvenido al juego. Tu rango actual es " + modelo.getPolicia().getRango() +
				". Debes perseguir a un ladron de sexo " + modelo.getLadron().getSexo() + " hasta su escondite y arrestarlo.");
		System.out.println("1) Aceptar caso");
		System.out.println("2) Salir del juego");
		System.out.println("Ingrese opcion: ");
		this.controlador.lecturaOpcionInicial();
	}

	public void comienzoJuego(Pais paisDeInicio) throws ParserConfigurationException, TransformerException, SAXException, IOException {
		System.out.println("Pais: " + paisDeInicio.getNombre());
		System.out.println("1) Viajar");
		System.out.println("2) Mostrar Tiempo");
		System.out.println("3) Entrar a lugar");
		System.out.println("4) Emitir orden de arresto");
		System.out.println("5) Salir del juego");
		System.out.println("Ingrese opcion: ");
		this.controlador.lecturaOpcionJuego();
	}

	public void mostrarTiempo() {
		System.out.println(modelo.getTiempo().getDia() + " " + modelo.getTiempo().getHoras() + ":00 horas");
	}

	public void mostrarLugares(ArrayList<Lugar> lugares) throws ParserConfigurationException, TransformerException, SAXException, IOException {
		for (int i=0; i<lugares.size(); i++)
		{
			System.out.println(i+1 + ") " + lugares.get(i).getNombre());
		}
			System.out.println("4) Volver al menu");
			System.out.println("Ingrese opcion: ");
		this.controlador.lecturaOpcionLugar(lugares);
		
	}

	public void mostrarPista(String pistaPedida) {
		System.out.println("Pista: " + pistaPedida);
		
	}

	public void mostrarOpcionesAViajar(ArrayList<Pais> opcionesAViajar) throws ParserConfigurationException, TransformerException, SAXException, IOException {
		ArrayList<Pais> paisesAViajar = new ArrayList<Pais>();
		int tamanioArray = opcionesAViajar.size();	

		for (int i=0; (i<tamanioArray); i++) {			
			System.out.println(i+1 + ") " + opcionesAViajar.get(i).getNombre());
			paisesAViajar.add(opcionesAViajar.get(i));
		}
		System.out.println("4) Volver al menu");
		System.out.println("Ingrese opcion: ");
		this.controlador.lecturaOpcionAViajar(paisesAViajar);
		}

	public String mostrarDatosPosibles(ArrayList<String> opciones) {
		for (int i=0; (i<opciones.size()); i++){
			System.out.println(i+1 + ") " + opciones.get(i));
		}
		System.out.println(opciones.size()+1 + ") Ingresar siguiente dato");
		System.out.println("Ingrese opcion: ");
		return controlador.lecturaDato(opciones);
	}

	public void mostrarOrdenDeArresto(String sospechoso) {
		if (sospechoso == "")System.out.println("No hay sospechosos con esos datos o hay mas de uno");
		else System.out.println("Ha sido emitida una orden de arresto para " + sospechoso);
	}

	public void mostrarFinal(String acontecimientoFinal) {
		System.out.println(acontecimientoFinal);
		
	}
		
}
